%{
#include "portal.h"
int linesCounter = 1;
%}
letra [a-z]
texto	"\""[^\'\n]*"\""
delimitador ";"|","|"."|"("|")"|"["|"]"|":"
sinal "+"|"-"
digito [0-9]
const_inteira ({sinal})?({digito})+
const_real ({sinal})?({digito})+"."({digito})+
operador "+"|"-"|"*"|"/"|"E"|"OU"|"NAO"|"DIV"|"MOD"|"<"|">"|"="|"<>"|">="|"<="|":="
identificador	{letra}({letra}|{digito})*

%%
repita {
}

atribuir {
}

tipo {
}

registro {
}

procedimento {
}

funcao {
}

leia {
}

escreva {
	printf("Escreva\n");
	return T_ESCREVA;
}

caracter {
}

texto {
	printf("Texto\n");
	return T_TEXTO;
}

de {
}

const {
}

var {
}

matriz {
}

arquivo {
}

faca {
}


senao {
}


decrementa {
}

incrementa {
}

programa {
	printf("Programa\n");
	return T_PROGRAMA;
	
}

inteiro {
}

real {
}

inicio {
	printf("Inicio\n");
	return T_INICIO;
}

fim {
	printf("Fim\n");
	return T_FIM;
}

se {
}

entao {

}

enquanto {
}

ate {
}

para {
}




"{"[^}\n]*"}" {
	printf( "Comentário\n");
}

" " {
	printf("Espaço em branco\n");
}

\n {
	printf("Nova Linha\n");
	linesCounter++;
}

\t  {
	printf("tabulacao\n");
}


{delimitador} {
	printf("Delimitador (%s)\n", yytext);
	return T_DELIMITADOR;
}

{const_inteira} {
	printf("Inteiro: %s\n", yytext);
}

{const_real} {
	printf("Real: %s\n", yytext);
}

{texto} {
	printf("Texto (%s)\n", yytext);
	return T_TEXTO;
}

{operador} {
	printf("Operador (%s)\n", yytext);
        
}

{identificador} {
	printf("Ident (%s)\n", yytext);
	return T_IDENTIFICADOR;
}

%%
/*
int main(int argc, char **argv) {
	++argv;
	--argc;
	
	if (argc > 0) {
		yyin = fopen(argv[0], "r");
	}
	else {
		yyin = stdin;
	}
	yylex();
	printf("\nNumero de linhas: %d\n\n", linesCounter);
	
	return 0;
}
*/
